var obj = {
    name: 'yjw',
    xueke: ['语文', '数学', {
        name: '英语',
        fenshu: 100
    }]
}

//浅拷贝 只是值变了 地址没变 改一个都变
var obj1 = obj
obj1.name = 'yz'
console.log(obj);
console.log(obj1);

//深拷贝 改变地址 基本数据类型都是深拷贝
//1.递归
function digui(e) {
    var new1 = Array.isArray(e) ? [] : {}
    for (const k in e) {
        if (typeof e[k] == 'object') {
            new1[k] = digui(e[k])
        } else {
            new1[k] = e[k]
        }
    }
    return new1
}
var obj1 = digui(obj)
obj1.xueke[2].name = '音乐'
console.log(obj);
console.log(obj1);
//2.JSON
var obj1 = JSON.stringify(obj)
var obj2 = JSON.parse(obj1)
obj2.name = 'yz'
obj2.xueke[2].name = '音乐'
console.log(obj);
console.log(obj2);